package main

/**
* @Author: DengLibin
* @Date: Create in 2023-01-17 10:50:49
* @Description: 387. 字符串中的第一个唯一字符
给定一个字符串 s ，找到 它的第一个不重复的字符，并返回它的索引 。如果不存在，则返回 -1 。
示例 1：

输入: s = "leetcode"
输出: 0
示例 2:

输入: s = "loveleetcode"
输出: 2
示例 3:

输入: s = "aabb"
输出: -1
*/
/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-17 11:09:58
 * @Description: 思路 map[字符]下标  arr[下标]次数
 */
func firstUniqChar(s string) int {
	m := make(map[rune]int, len(s))
	arr := make([]int, len(s))

	for i, c := range s {
		index, has := m[c]
		if has {
			arr[index] += 1
		} else {
			m[c] = i
			arr[i] += 1
		}
	}

	for i, num := range arr {
		if num == 1 {
			return i
		}
	}
	return -1
}
